/**
 * **[896. 单调数列](https://leetcode.cn/problems/monotonic-array)**
 *
 * 如果数组是单调递增或单调递减的，那么它是 **单调** 的。
 *
 * 如果对于所有 `i <= j`，`nums[i] <= nums[j]`，那么数组 `nums` 是单调递增的。
 * 如果对于所有 `i <= j`，`nums[i]> = nums[j]`，那么数组 `nums` 是单调递减的。
 *
 * 当给定的数组 `nums` 是单调数组时返回 `true`，否则返回 `false`。
 *
 * @param nums
 * @returns
 */
export default function (nums: number[]): boolean {
	const len = nums.length;
	if (len < 3) return true;

	let flag: number | undefined = undefined;
	for (let i = 0; i < len - 1; i++) {
		const cur = nums[i + 1] - nums[i];
		if (cur === 0) continue;
		if (flag === undefined) {
			flag = cur;
			continue;
		}
		if (cur * flag < 0) return false;
	}

	return true;
}
